//
// 顺序查找
// Created by mazaiting on 2021/12/19.
//

#ifndef DATA_STRUCTURE_C_SEQ_SEARCH_H
#define DATA_STRUCTURE_C_SEQ_SEARCH_H

#include <stdio.h>
#include <stdlib.h>

// 键类型
#define KeyType int

// 顺序查找结点类型
typedef struct {
    // 查找表中每个数据元素的值
    KeyType key;
} SSElemType;

// 顺序查找表
typedef struct {
    // 存放查找表中数据元素的数组
    SSElemType *elem;
    // 长度
    int length;
} SSTable;

/**
 * 创建顺序查找表
 * @param st 表
 * @param length 长度
 * @param arr 数组
 */
void Create_SSTable(SSTable **st, int length, int arr[]);

/**
 * 搜索序列
 * @param st 表
 * @param key 关键字
 * @return 如果 0，说明查找失败；反之，返回的是含有关键字key的数据元素在查找表中的位置
 */
int Search_Seq(SSTable *st, int key);

/**
 * 打印顺序表数值
 * @param st 顺序表
 */
void SSTable_Print(SSTable *st);

/**
 * 二分查找
 * @param st 顺序表
 * @param key 关键字
 * @return
 */
int Search_Bin(SSTable *st, int key);


#endif //DATA_STRUCTURE_C_SEQ_SEARCH_H
